/*
 * @lc app=leetcode.cn id=201 lang=cpp
 *
 * [201] 数字范围按位与
 */

// @lc code=start
class Solution {
public:
    int rangeBitwiseAnd(int m, int n) {
        //0101 0110 0111
        //区间范围内与运算的结果，末尾肯定都是0
        //得到的答案应该是保留m和n前面相同的项
        //2147483647 = 2^31 - 1
        int ans = 0;
        for(int i = 30; i >= 0; i--){
            if((m>>i & 1) == (n>>i & 1)) ans += (m >>i & 1) << i;
            else break;
        }
        return ans;
    }
};
// @lc code=end

